<!DOCTYPE html>
<html>
  <head><meta name="generator" content="Hexo 3.8.0">
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport">
  <meta name="description" content="fengzhaoyang&#39;s blog">
  <meta name="keyword" content="hexo-theme, vuejs">
  
  <link rel="shortcut icon" href="/css/images/logo.png">
  
  <title>
    
    fzy-blog
    
  </title>
  <link href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
  <link href="//cdnjs.cloudflare.com/ajax/libs/nprogress/0.2.0/nprogress.min.css" rel="stylesheet">
  <link href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/tomorrow.min.css" rel="stylesheet">
  <link rel="stylesheet" href="/css/style.css">
  
  <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
  <script src="//cdnjs.cloudflare.com/ajax/libs/geopattern/1.2.3/js/geopattern.min.js"></script>
  <script src="//cdnjs.cloudflare.com/ajax/libs/nprogress/0.2.0/nprogress.min.js"></script>
  
  <script src="/js/qrious.js"></script>
  
  
  
  
    <!-- MathJax support START -->
    <script type="text/x-mathjax-config">
      MathJax.Hub.Config({
        tex2jax: {
          inlineMath: [ ['$','$'], ["\\(","\\)"]  ],
          processEscapes: true,
          skipTags: ['script', 'noscript', 'style', 'textarea', 'pre', 'code']
        }
      });
    </script>

    <script type="text/x-mathjax-config">
      MathJax.Hub.Queue(function() {
        var all = MathJax.Hub.getAllJax(), i;
        for (i=0; i < all.length; i += 1) {
          all[i].SourceElement().parentNode.className += ' has-jax';
        }
      });
    </script>
    <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
    <!-- MathJax support END -->
  


</head>
<div class="wechat-share">
  <img src="/css/images/logo.png">
</div>
  <body>
    <header class="header fixed-header">
  <div class="header-container">
    <a class="home-link" href="/">
      <div class="logo"></div>
      <span>fzy-blog</span>
    </a>
    <ul class="right-list">
      
        <li class="list-item">
          
            <a href="/" class="item-link active">Home</a>
          
        </li>
      
        <li class="list-item">
          
            <a href="/tags/" class="item-link">Tags</a>
          
        </li>
      
        <li class="list-item">
          
            <a href="/archives/" class="item-link">Archives</a>
          
        </li>
      
        <li class="list-item">
          
            <a href="/project/" class="item-link">Projects</a>
          
        </li>
      
        <li class="list-item">
          
            <a href="/about/" class="item-link">About</a>
          
        </li>
      
    </ul>
    <div class="menu">
      <span class="icon-bar"></span>
      <span class="icon-bar"></span>
      <span class="icon-bar"></span>
    </div>
    <div class="menu-mask">
      <ul class="menu-list">
        
          <li class="menu-item">
            
              <a href="/" class="menu-link mobile-active">Home</a>
            
          </li>
        
          <li class="menu-item">
            
              <a href="/tags/" class="menu-link">Tags</a>
            
          </li>
        
          <li class="menu-item">
            
              <a href="/archives/" class="menu-link">Archives</a>
            
          </li>
        
          <li class="menu-item">
            
              <a href="/project/" class="menu-link">Projects</a>
            
          </li>
        
          <li class="menu-item">
            
              <a href="/about/" class="menu-link">About</a>
            
          </li>
        
      </ul>
    </div>
  </div>
</header>

    <main class="app-body">
  
  <article class="article-card">
    <h2 class="article-head">
      <a href="/2019/05/24/分布式日志监控/JVM监控/">JVM 监控</a>
    </h2>
    <p class="article-date">2019-05-24</p>
    
    
  <a href="/tags#分布式日志监控">
    <span class="tag-code">分布式日志监控</span>
  </a>

    
    <div class="article-summary">
      
      JVM 监控本地监控： jvisualvm

      
    </div>
    <a class="more" href="/2019/05/24/分布式日志监控/JVM监控/">全文...</a>
  </article>
  
  <article class="article-card">
    <h2 class="article-head">
      <a href="/2019/05/24/分布式权限服务/接口鉴权设计/">接口鉴权设计</a>
    </h2>
    <p class="article-date">2019-05-24</p>
    
    
  <a href="/tags#分布式权限服务">
    <span class="tag-code">分布式权限服务</span>
  </a>

    
    <div class="article-summary">
      
      方案一：RESTful 登录设计（基于 Spring 及 Redis 的 Token 鉴权）http://www.scienjus.com/restful-token-authorization/
方案二：简单签权设计：
客户端：Url 中每次请求携带参数 accessToken=dqwrw ...
      
    </div>
    <a class="more" href="/2019/05/24/分布式权限服务/接口鉴权设计/">全文...</a>
  </article>
  
  <article class="article-card">
    <h2 class="article-head">
      <a href="/2019/05/24/分布式日志监控/java诊断工具/">java 诊断工具</a>
    </h2>
    <p class="article-date">2019-05-24</p>
    
    
  <a href="/tags#分布式日志监控">
    <span class="tag-code">分布式日志监控</span>
  </a>

    
    <div class="article-summary">
      
      java 诊断工具arthashttps://alibaba.github.io/arthas/
java 性能诊断 shell 脚本https://github.com/oldratlee/useful-scripts/blob/master/docs/java.md#-show-busy ...
      
    </div>
    <a class="more" href="/2019/05/24/分布式日志监控/java诊断工具/">全文...</a>
  </article>
  
  <article class="article-card">
    <h2 class="article-head">
      <a href="/2019/05/24/分布式权限服务/网站安全防御/">网站安全防御</a>
    </h2>
    <p class="article-date">2019-05-24</p>
    
    
  <a href="/tags#分布式权限服务">
    <span class="tag-code">分布式权限服务</span>
  </a>

    
    <div class="article-summary">
      
      https://blog.csdn.net/zhangxin09/article/details/54881190https://blog.csdn.net/zhangxin09/article/details/51926550https://blog.csdn.net/zhangxin09 ...
      
    </div>
    <a class="more" href="/2019/05/24/分布式权限服务/网站安全防御/">全文...</a>
  </article>
  
  <article class="article-card">
    <h2 class="article-head">
      <a href="/2019/05/24/分布式权限服务/单点登录原理/">单点登录原理</a>
    </h2>
    <p class="article-date">2019-05-24</p>
    
    
  <a href="/tags#分布式权限服务">
    <span class="tag-code">分布式权限服务</span>
  </a>

    
    <div class="article-summary">
      
      一、简单实现方式应用与应用之间有一个定义好的 key。从应用 1 直接登录到应用 2

之前需要把用户 username,password,key 同时放到 Cookie 里，
然后在另一个应用里专门有一个 Servlet 去验证 key 是否和这个应用的 key 相等（key 是加密的 k ...
      
    </div>
    <a class="more" href="/2019/05/24/分布式权限服务/单点登录原理/">全文...</a>
  </article>
  
  <article class="article-card">
    <h2 class="article-head">
      <a href="/2019/05/24/分布式消息队列MQ/Kafka知识点总结/">Kafka知识点总结</a>
    </h2>
    <p class="article-date">2019-05-24</p>
    
    
  <a href="/tags#分布式消息队列MQ">
    <span class="tag-code">分布式消息队列MQ</span>
  </a>

    
    <div class="article-summary">
      
      Kafka 保证数据不丢失https://blog.csdn.net/qingqing7/article/details/80054281

      
    </div>
    <a class="more" href="/2019/05/24/分布式消息队列MQ/Kafka知识点总结/">全文...</a>
  </article>
  
  <article class="article-card">
    <h2 class="article-head">
      <a href="/2019/05/24/分布式消息队列MQ/消息系统设计与实现/">消息系统设计与实现</a>
    </h2>
    <p class="article-date">2019-05-24</p>
    
    
  <a href="/tags#分布式消息队列MQ">
    <span class="tag-code">分布式消息队列MQ</span>
  </a>

    
    <div class="article-summary">
      
      http://blog.csdn.net/moshenglv/article/details/51943545

      
    </div>
    <a class="more" href="/2019/05/24/分布式消息队列MQ/消息系统设计与实现/">全文...</a>
  </article>
  
  <article class="article-card">
    <h2 class="article-head">
      <a href="/2019/05/24/分布式消息队列MQ/RocketMQ安装部署测试/">RocketMQ安装部署测试</a>
    </h2>
    <p class="article-date">2019-05-24</p>
    
    
  <a href="/tags#分布式消息队列MQ">
    <span class="tag-code">分布式消息队列MQ</span>
  </a>

    
    <div class="article-summary">
      
      http://blog.csdn.net/zhu_tianwei/article/details/40948447

      
    </div>
    <a class="more" href="/2019/05/24/分布式消息队列MQ/RocketMQ安装部署测试/">全文...</a>
  </article>
  
  <article class="article-card">
    <h2 class="article-head">
      <a href="/2019/05/24/分布式缓存/redis分布式缓存/">redis分布式缓存</a>
    </h2>
    <p class="article-date">2019-05-24</p>
    
    
  <a href="/tags#分布式缓存">
    <span class="tag-code">分布式缓存</span>
  </a>

    
    <div class="article-summary">
      
      一.为什么选择 redis
在项目中使用 redis 做为缓存，还没有使用 memcache,考虑因素主要有两点：
1.redis 丰富的数据结构,其 hash,list,set 以及功能丰富的 String 的支持，对于实际项目中的使用有很大的帮忙。（可参考官网 redis.io）
2.r ...
      
    </div>
    <a class="more" href="/2019/05/24/分布式缓存/redis分布式缓存/">全文...</a>
  </article>
  
  <article class="article-card">
    <h2 class="article-head">
      <a href="/2019/05/24/多线程异步并发/BlockingQueue生产者消费者代码实现/">BlockingQueue生产者消费者代码实现</a>
    </h2>
    <p class="article-date">2019-05-24</p>
    
    
  <a href="/tags#多线程异步并发">
    <span class="tag-code">多线程异步并发</span>
  </a>

    
    <div class="article-summary">
      
      题目：编写一段生产者/消费者的 Java 代码，其中生产者每次生产 1 个 0 到 1000 之间的随机数，消费者则把该随机数打印出来。如果产生的随机数为 0，则生产者、消费者均退出运行。要求生产者、消费者均使用线程来实现。
123456789101112131415161718192021 ...
      
    </div>
    <a class="more" href="/2019/05/24/多线程异步并发/BlockingQueue生产者消费者代码实现/">全文...</a>
  </article>
  

  
  <div class="guide-pager">
  
    <a href="/page/14/"><span class="page-arrow">← </span>Prev</a>
  
  
    <a href="/page/16/">Next<span class="page-arrow"> →</span></a>
  
</div>
  
</main>
    <div class="scroll-top">
  <span class="arrow-icon"></span>
</div>
    <footer class="app-footer">
  <p class="copyright">
    &copy; 2019
  </p>
</footer>

<script>
  function async (u, c) {
    var d = document,
      t = 'script',
      o = d.createElement(t),
      s = d.getElementsByTagName(t)[0];
    o.src = u;
    if (c) {
      o.addEventListener('load', function (e) {
        c(null, e);
      }, false);
    }
    s.parentNode.insertBefore(o, s);
  }
</script>
<script>
  async ("//cdnjs.cloudflare.com/ajax/libs/fastclick/1.0.6/fastclick.min.js", function () {
    FastClick.attach(document.body);
  })
</script>

<script>
  var hasLine = 'true';
  async ("//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js", function () {
    $('figure pre').each(function (i, block) {
      var figure = $(this).parents('figure');
      if (hasLine === 'false') {
        figure.find('.gutter').hide();
      }
      var lang = figure.attr('class').split(' ')[1] || 'code';
      var codeHtml = $(this).html();
      var codeTag = document.createElement('code');
      codeTag.className = lang;
      codeTag.innerHTML = codeHtml;
      $(this).attr('class', '').empty().html(codeTag);
      figure.attr('data-lang', lang.toUpperCase());
      hljs.highlightBlock(block);
    });
  })
</script>
<!-- Baidu Tongji -->

<script src="/js/script.js"></script>
  </body>
</html>